const { verifyToken } = require('../utils/jwt');

const auth = async (req, res, next) => {
  try {
    const authHeader = req.headers.authorization;
    if (!authHeader || !authHeader.startsWith('Bearer ')) {
      return res.status(401).json({
        message: '未提供认证令牌'
      });
    }

    const token = authHeader.split(' ')[1];
    const { valid, expired, payload } = verifyToken(token);

    if (!valid) {
      return res.status(401).json({
        message: expired ? '认证令牌已过期' : '无效的认证令牌'
      });
    }

    // 将用户信息添加到请求对象中
    req.user = payload;
    next();
  } catch (error) {
    console.error('认证中间件错误：', error);
    res.status(500).json({
      message: '服务器内部错误'
    });
  }
};

module.exports = auth; 